package com.sywl.ytcx.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import org.springframework.stereotype.Component;

@Component
public class VerTokenUtil {
    /*
     * Token解析器
     *用法：VerTokenUtil.getUserId(请求头里的Authorization)
     *返回值：用户id
     *错误值：-1
     * 注意：token必须是本机的JwtUtil.getToken()生成的
     *
     *
     *
    注意：不要修改这里的代马，公用工具类不出问题就不要改
    在请求头里带token，名为 Authorization
    格式：Authorization: <token>
    生成出来参数是:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6Iul54WyIiwiaWQiOiIxIiwiY2VsbF9waG9uZV9udW0iOiIxODM3ODM0MzE2MSIsImV4cCI6MTc0MjM3ODUxNX0.5MWOo6tqzkMAQIuUx6CTuIHh25IEBVv05EMlIu2U5Fk
    这玩意是在本服务端生成的，不能在其他服务端使用
    在VerTokenUtil包，这是个静态类，不需要实例化，直接调用方法即可


    解析token的方法：VerTokenUtil.getUserId(Authorization)
    解析token的方法：VerTokenUtil.getUsername(Authorization)
    *
     *
     * */


    /*
    * 获取用户ID
    * */
    public static int getUserId(String token) {
        try {
            if (token == null) {
                return -1;
            }
            Jws<Claims> jwstoken = JwtUtil.parseClaim(token);
            int id = Integer.parseInt(jwstoken.getPayload().get("user_id") + "");
            return id;
        } catch (Exception e) {
//            e.printStackTrace();
            System.err.println("解析token出错");
            return -1;
        }
    }


    /*
    * 获取用户名
    * */
    public static String getUsername(String token) {
        try {
            Jws<Claims> jwstoken = JwtUtil.parseClaim(token);
            String name = jwstoken.getPayload().get("username") + "";
            return name;
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("VerToken: 解析token出错");
            return "null";
        }
    }


    /*
    * 解析AmindId--停用
    * */
//
//    public static int getAdminId(String token) {
//        try {
//            if (token == null) {
//                return -1;
//            }
//            Jws<Claims> jwstoken = JwtUtil.parseClaim(token);
//            //验证是否为管理员
//            if (jwstoken.getPayload().get("admin") != null) {
//                int id = Integer.parseInt(jwstoken.getPayload().get("id") + "");
//                return id;
//            } else {
//                return -1;
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            System.err.println("VerToken: 解析token出错");
//            return -1;
//        }
//    }


}
